package com.nexfra.bbssys.bbs.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class BbsGeneralBoardDao {
	@Autowired
	private SqlSession sqlSession;

	/**
	 * 게시판전체목록 카운트를 조회한다. 
	 * @param  sqlParams 파라미터맵  
	 * @return List<Map<String,Object>>
	 */
	public long selectGeneralBoardListCount(HashMap<String, String> sqlParams)
			throws Exception {		
		return sqlSession.selectOne("BbsGeneralBoardSqlMap.selectGeneralBoardListCount", sqlParams);
	}
	
	/**
	 * 게시판목록을 조회한다.
	 * @param  sqlParams 파라미터맵  
	 * @return List<Map<String,Object>>
	 */
	public List<Map<String,Object>> selectGeneralBoardList(HashMap<String, String> sqlParams)
			throws Exception {		
		return sqlSession.selectList("BbsGeneralBoardSqlMap.selectGeneralBoardList", sqlParams);
	}
	
	/**
	 * 게시글을 조회한다.
	 * @param  sqlParams 파라미터맵  
	 * @return Map<String,Object>
	 */
	public Map<String,Object> selectGeneralBoard(HashMap<String, String> sqlParams)
			throws Exception {		
		return sqlSession.selectOne("BbsGeneralBoardSqlMap.selectGeneralBoard", sqlParams);
	}
	
	/**
	 * 게시글 조회수를 업데이트한다.
	 * @param  sqlParams 파라미터맵  
	 * @return int
	 */
	public void updateReadCntGeneralBoard(HashMap<String, String> sqlParams)
			throws Exception {
		sqlSession.update("BbsGeneralBoardSqlMap.updateReadCntGeneralBoard", sqlParams);
	}
	
	/**
	 * 게시글 댓글을 조회한다.
	 * @param  sqlParams 파라미터맵  
	 * @return List<Map<String,Object>>
	 */
	public List<Map<String,Object>> selectGeneralBoardCmmt(HashMap<String, String> sqlParams)
			throws Exception {		
		return sqlSession.selectList("BbsGeneralBoardSqlMap.selectGeneralBoardCmmt", sqlParams);
	}
	
	/**
	 * 게시글 첨부파일을 조회한다.
	 * @param  sqlParams 파라미터맵  
	 * @return List<Map<String,Object>>
	 */
	public List<Map<String,Object>> selectGeneralBoardAtch(HashMap<String, String> sqlParams)
			throws Exception {		
		return sqlSession.selectList("BbsGeneralBoardSqlMap.selectGeneralBoardAtch", sqlParams);
	}
	
	/**
	 * 게시글 첨부파일을 삭제한다.(논리적삭제)
	 * @param  sqlParams 파라미터맵  
	 * @return int
	 */
	public int deleteGeneralBoardAtch(HashMap<String, String> sqlParams)
			throws Exception {
		return sqlSession.update("BbsGeneralBoardSqlMap.deleteGeneralBoardAtch", sqlParams);
	}
	
	/**
	 * 댓글을 삭제한다.(물리적삭제)
	 * @param  sqlParams 파라미터맵  
	 * @return void
	 */
	public int deleteCommentGeneralBoard(HashMap<String, String> sqlParams)
			throws Exception {
		return sqlSession.delete("BbsGeneralBoardSqlMap.deleteCommentGeneralBoard", sqlParams);
	}

	/**
	 * 게시글ID 채번 
	 * @param
	 * @return long
	 */
	public String selectSeqAtclId() throws Exception {		
		return sqlSession.selectOne("BbsGeneralBoardSqlMap.selectSeqAtclId");
	}
	
	/**
	 * 댓글ID 채번 
	 * @param
	 * @return long
	 */
	public String selectSeqCmmtId() throws Exception {		
		return sqlSession.selectOne("BbsGeneralBoardSqlMap.selectSeqCmmtId");
	}
	
	/**
	 * thread 채번 
	 * @param
	 * @return long
	 */
	public String selectSeqThread() throws Exception {		
		return sqlSession.selectOne("BbsGeneralBoardSqlMap.selectSeqThread");
	}
	
	/**
	 * 댓글thread 채번 
	 * @param
	 * @return long
	 */
	public String selectSeqCmmtThread() throws Exception {		
		return sqlSession.selectOne("BbsGeneralBoardSqlMap.selectSeqCmmtThread");
	}
	
	/**
	 * 파일첨부 ID를 채번한다.  
	 * @param
	 * @return long
	 */
	public String selectSeqAtchId() throws Exception {		
		return sqlSession.selectOne("BbsGeneralBoardSqlMap.selectSeqAtchId");
	}
	
	/**
	 * 게시글을 등록한다.
	 * @param sqlParams
	 */
	public void insertGeneralBoard(HashMap<String, String> sqlParams) throws Exception {		
		sqlSession.insert("BbsGeneralBoardSqlMap.insertGeneralBoard", sqlParams);
	}
	
	/**
	 * 댓글을 등록한다.
	 * @param sqlParams
	 */
	public void insertCommentGeneralBoard(HashMap<String, String> sqlParams) throws Exception {		
		sqlSession.insert("BbsGeneralBoardSqlMap.insertCommentGeneralBoard", sqlParams);
	}
	
	/**
	 * 태그를 등록한다.
	 * @param sqlParams
	 */
	public void insertAtclTagId(HashMap<String, String> sqlParams) throws Exception {		
		sqlSession.insert("BbsGeneralBoardSqlMap.insertAtclTagId", sqlParams);
	}
	
	/**
	 * 게시글을 수정한다.
	 * @param sqlParams
	 */
	public void updateGeneralBoard(HashMap<String, String> sqlParams) throws Exception {		
		sqlSession.update("BbsGeneralBoardSqlMap.updateGeneralBoard", sqlParams);
	}
	
	/**
	 * 게시글을 삭제한다.
	 * @param sqlParams
	 */
	public void deleteGeneralBoard(HashMap<String, String> sqlParams) throws Exception {		
		sqlSession.update("BbsGeneralBoardSqlMap.deleteGeneralBoard", sqlParams);
	}
	
	/**
	 * 게시글의 정렬순서를 수정한다.
	 * @param sqlParams
	 */
	public void updateOrderSeqGeneralBoard(HashMap<String, String> sqlParams) throws Exception {		
		sqlSession.update("BbsGeneralBoardSqlMap.updateOrderSeqGeneralBoard", sqlParams);
	}
	
	/**
	 * 댓글글의 정렬순서를 수정한다.
	 * @param sqlParams
	 */
	public void updateCommentOrderSeqGeneralBoard(HashMap<String, String> sqlParams) throws Exception {		
		sqlSession.update("BbsGeneralBoardSqlMap.updateCommentOrderSeqGeneralBoard", sqlParams);
	}
	
	/**
	 * 첨부파일을 등록한다.
	 * @param sqlParams
	 */
	public void insertAtchFile(HashMap<String, String> sqlParams) throws Exception {		
		sqlSession.insert("BbsGeneralBoardSqlMap.insertAtchFile", sqlParams);
	}	
	
	/**
	 * 게시글에 딸린 첨부파일 개수를 조회한다.   
	 * @param
	 * @return long
	 */ 
	public int selectGeneralBoardAtchCount(HashMap<String, String> sqlParams) throws Exception {		
		return sqlSession.selectOne("BbsGeneralBoardSqlMap.selectGeneralBoardAtchCount", sqlParams);
	}	
}
